/**
 * 中文标点符号到英文标点符号的映射表
 */
export const punctuationMap: { [key: string]: string } = {
  // 常用标点符号
  '，': ',',  // 中文逗号 -> 英文逗号
  '。': '.',  // 中文句号 -> 英文句号
  '；': ';',  // 中文分号 -> 英文分号
  '：': ':',  // 中文冒号 -> 英文冒号
  '？': '?',  // 中文问号 -> 英文问号
  '！': '!',  // 中文感叹号 -> 英文感叹号
  
  // 引号 - 使用Unicode转义序列
  '\u201c': '"',  // 中文左双引号 -> 英文双引号
  '\u201d': '"',  // 中文右双引号 -> 英文双引号
  '\u2018': "'",  // 中文左单引号 -> 英文单引号
  '\u2019': "'",  // 中文右单引号 -> 英文单引号
  
  // 括号
  '（': '(',  // 中文左括号 -> 英文左括号
  '）': ')',  // 中文右括号 -> 英文右括号
  '【': '[',  // 中文左方括号 -> 英文左方括号
  '】': ']',  // 中文右方括号 -> 英文右方括号
  '｛': '{',  // 中文左花括号 -> 英文左花括号
  '｝': '}',  // 中文右花括号 -> 英文右花括号
  
  // 其他符号
  '～': '~',  // 中文波浪号 -> 英文波浪号
  '—': '-',  // 中文破折号 -> 英文连字符
  '－': '-',  // 中文连字符 -> 英文连字符
  '…': '...', // 中文省略号 -> 英文省略号
  '·': '·',  // 中文间隔号 -> 英文间隔号
  
  // 特殊符号
  '《': '<',  // 中文左书名号 -> 英文小于号
  '》': '>',  // 中文右书名号 -> 英文大于号
  '〈': '<',  // 中文左单书名号 -> 英文小于号
  '〉': '>',  // 中文右单书名号 -> 英文大于号
};

/**
 * 检查字符是否为中文标点符号
 * @param char 要检查的字符
 * @returns 如果是中文标点符号返回true，否则返回false
 */
export function isChinesePunctuation(char: string): boolean {
  return punctuationMap.hasOwnProperty(char);
}

/**
 * 获取字符对应的英文标点符号
 * @param char 中文标点符号
 * @returns 对应的英文标点符号，如果不是中文标点符号则返回原字符
 */
export function getEnglishPunctuation(char: string): string {
  return punctuationMap[char] || char;
}

/**
 * 替换文本中的中文标点符号为英文标点符号
 * @param text 要处理的文本
 * @returns 替换后的文本
 */
export function replaceChinesePunctuation(text: string): string {
  return text.split('').map(char => getEnglishPunctuation(char)).join('');
}